﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using QLKhachSan.DTO;
using System.Data.SqlClient;
using QLKhachSan.DAO;
using QLKhachSan.BUS;
using DevExpress.XtraEditors;

namespace QLKhachSan.GUI
{
    public partial class fThanhToan : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public fThanhToan()
        {
            InitializeComponent();
        }     
       
        public static int maPhieuThu;     
        private int soTienDV = 0;
        private int soTienDT = 0;
        private int soTienP = 0;
        private int soTienDenBu = 0;
        private int soTienTraTruoc = 0;
        private fInBaoCao _fInBaoCao = new fInBaoCao();
        private void fThanhToan_Load(object sender, EventArgs e)
        {
            textBoxMaSo.ResetText();
            textBoxDiaChi.ResetText();
            // Ten Khach Hang + maPhieuDen
            textBoxTenKH.Enabled = false;
            
            
            DataTable dta_kh = BUS_KhachHang.hienthiDanhSachKhachHang();
            for (int j = 0; j < dta_kh.Rows.Count; j++)
            {
                if (int.Parse(dta_kh.Rows[j]["MaKH"].ToString()) == fDanhSachPhong.maKH)
                {
                    textBoxTenKH.Text = dta_kh.Rows[j]["TenKH"].ToString();
                    break;
                }
            }
            // textbox Tien Tra Truoc
            DTO_PhieuDen dto_pden = new DTO_PhieuDen();
            dto_pden.MaPhieuDen = fDanhSachPhong.maPhieuDen;
            DataTable data_pd = BUS_PhieuDen.hienthiDanhSachPhieuDenTheoMaPhieuDen(dto_pden);
            textBoxTraTruoc.Text = data_pd.Rows[0]["TienTraTruoc"].ToString();
            soTienTraTruoc = int.Parse(data_pd.Rows[0]["TienTraTruoc"].ToString());
            textBoxTraTruoc.Enabled = false;
            // Ten Nhan Vien
            DataTable dta_nv = DAO_NhanVien.hienthiDanhSachNhanVienTheoMaNV(int.Parse(fLogin.maNV));
            textBoxTenNV.Text = dta_nv.Rows[0]["TenNV"].ToString();
            // Bang DS Dich Vu
            DTO_BangKeDichVu dto_bkdv = new DTO_BangKeDichVu();
            dto_bkdv.MaKH = fDanhSachPhong.maKH;
            DataTable data_dv = BUS_CTBangKeDichVu.hienthiDanhSachCTBangKeDichVuDeThanhToan(dto_bkdv);
            dataGridViewDV.DataSource = data_dv;
            // Bang Den Bu
            DTO_PhieuDenBu dto_pdb = new DTO_PhieuDenBu();
            dto_pdb.MaPhieuDen = fDanhSachPhong.maPhieuDen;
            DataTable dta_db = BUS_PhieuDenBu.hienthiDanhSachPhieuDenBuDeThanhToan(dto_pdb);
            dataGridViewDB.DataSource = dta_db;
            // Bang Phong
            DTO_CTPhieuDen dto_ctpd = new DTO_CTPhieuDen();
            dto_ctpd.MaPhieuDen = fDanhSachPhong.maPhieuDen;
            DataTable dta_p = BUS_CTPhieuDen.hienThiDanhSachCTPhieuDenDeThanhToan(dto_ctpd);
            dataGridViewP.DataSource = dta_p ;
            // Bang Dat Tiec
            DTO_DatTiec dto_dt = new DTO_DatTiec();
            dto_dt.MaKH = fDanhSachPhong.maKH;
            dto_dt.DaTra = "Chưa";
            DataTable dta_dt = BUS_CTDatTiec.hienthiDanhSachCTDatTiecDeThanhToan(dto_dt);
            dataGridViewDT.DataSource = dta_dt ;
            // So Tien Phai Tra
            
            for (int i = 0; i < data_dv.Rows.Count ; i++ )
            {
                soTienDV += int.Parse(data_dv.Rows[i]["SoLuong"].ToString()) * int.Parse(data_dv.Rows[i]["DonGia"].ToString());
            }
            for (int i = 0; i < dta_db.Rows.Count; i++)
            {
                soTienDenBu += int.Parse(dta_db.Rows[i]["SoTien"].ToString());
            }
            

            for (int i = 0; i < dta_p.Rows.Count ; i++)
            {
                TimeSpan songay = DateTime.Now.Subtract(DateTime.Parse(dta_p.Rows[i]["NgayThue"].ToString()));
                if(DateTime.Parse(dta_p.Rows[i]["NgayTra"].ToString()) <= DateTime.Now)
                {
                    songay = DateTime.Parse(dta_p.Rows[i]["NgayTra"].ToString()).Subtract(DateTime.Parse(dta_p.Rows[i]["NgayThue"].ToString()));
                    soTienP += int.Parse(dta_p.Rows[i]["Gia"].ToString()) * ((int)songay.TotalDays);
                }
                else
                {
                        if (DateTime.Now.Hour >= 12)
                    {
                        soTienP += int.Parse(dta_p.Rows[i]["Gia"].ToString()) * ((int)songay.TotalDays + 1);                 
                    }
                    else
                    {
                        soTienP += int.Parse(dta_p.Rows[i]["Gia"].ToString()) * ((int)songay.TotalDays);
                    }   
                }
            }
            int soTienTong = soTienDV + soTienP + soTienDT + soTienDenBu;
            textBoxTienPhaiTra.Text = (soTienTong - int.Parse(textBoxTraTruoc.Text)).ToString(); 
            textBoxTienPhaiTra.Enabled = false;
            textBoxTienDT.Enabled = false;
            textBoxTienDT.Text = soTienDT.ToString();
            textBoxTienDV.Enabled = false;
            textBoxTienDV.Text = soTienDV.ToString();
            textBoxTienP.Enabled = false;
            textBoxTienP.Text = soTienP.ToString();
            textBoxTienDB.Enabled = false;
            textBoxTienDB.Text = soTienDT.ToString();
        }

        private void textBoxMaSo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void simpleButtonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void simpleButtonThanhToan_Click(object sender, EventArgs e)
        {
            if (textBoxMaSo.Text.Trim() != "" && textBoxDiaChi.Text.Trim() != "")
            {
                if (textBoxMaSo.Text.Trim().Length == 10)
                {
                    if (MessageBox.Show("Bạn có Chắc chắn muốn Lập Hóa Đơn Thanh Toán Và In ???", "Note !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        // Sua Khach Hang
                        DTO_KhachHang dto_kh = new DTO_KhachHang();
                        dto_kh.MaKH = fDanhSachPhong.maKH;
                        dto_kh.MaSoThue = textBoxMaSo.Text.Trim();
                        dto_kh.DiaChiThue = textBoxDiaChi.Text.Trim();
                        BUS_KhachHang.suaKhachHangDeThanhToan(dto_kh);
                        // them Phieu thu
                        DTO_PhieuThu dto_pt = new DTO_PhieuThu();
                        dto_pt.MaKH = fDanhSachPhong.maKH;
                        dto_pt.MaNV = int.Parse(fLogin.maNV);
                        dto_pt.TienPhaiTra = int.Parse(textBoxTienPhaiTra.Text);
                        dto_pt.NgayThu = DateTime.Now;
                        BUS_PhieuThu.themPhieuThu(dto_pt);
                        // Ma Phieu Thu
                        DataTable dta_pt = BUS_PhieuThu.hienthiDanhSachPhieuThu();
                        maPhieuThu = int.Parse(dta_pt.Rows[dta_pt.Rows.Count - 1]["MaPhieuThu"].ToString());
                        // Sua Trang Thai Phong
                        DTO_CTPhieuDen dto_ctpd = new DTO_CTPhieuDen();
                        dto_ctpd.MaPhieuDen = fDanhSachPhong.maPhieuDen;
                        DataTable dta_p = BUS_CTPhieuDen.hienThiDanhSachCTPhieuDenDeThanhToan(dto_ctpd);
                        DTO_Phong dto_p = new DTO_Phong();
                        for (int i = 0; i < dta_p.Rows.Count; i++)
                        {
                            dto_p.TenPhong = dta_p.Rows[i]["TenPhong"].ToString();
                            dto_p.MaTrangThai = 1;
                            BUS_Phong.suaPhongTheoTrangThai(dto_p);
                            //Sua Ngay Tra Du Kien
                            if (DateTime.Parse(dta_p.Rows[i]["NgayTra"].ToString()) > DateTime.Now)
                            {
                                dto_ctpd.TenPhong = dta_p.Rows[i]["TenPhong"].ToString();
                                dto_ctpd.NgayTra = DateTime.Now;
                                BUS_CTPhieuDen.SuaCTPhieuDenTheoNgayTra(dto_ctpd);
                            }
                        }                       
                        // Sua Dat Tiec
                        DTO_DatTiec dto_dtiec = new DTO_DatTiec();
                        dto_dtiec.MaKH = fDanhSachPhong.maKH;
                        dto_dtiec.DaTra = "Chưa";
                        DataTable dta_dtiec = BUS_CTDatTiec.hienthiDanhSachCTDatTiecDeThanhToan(dto_dtiec);
                        for (int i = 0; i < dta_dtiec.Rows.Count; i++ )
                        {
                            dto_dtiec.MaDatTiec = int.Parse(dta_dtiec.Rows[i]["MaDatTiec"].ToString());
                            dto_dtiec.DaTra = "Rồi";
                            BUS_DatTiec.suaDatTiecTheoDaTra(dto_dtiec);
                        }
                        
                        

                        //Ma Phieu Thu
                        DataTable data_pt = BUS_PhieuThu.hienthiDanhSachPhieuThu();
                        MessageBox.Show("Đã Lập Hóa Đơn  thành công (Mã Phiếu Thu: " +data_pt.Rows[data_pt.Rows.Count -1]["MaPhieuThu"].ToString()  +"), đóng Form Lại Và In ", "Thông Báo ", MessageBoxButtons.OK, MessageBoxIcon.Question);
                        this.Close();
                        _fInBaoCao.Close();
                        _fInBaoCao = new fInBaoCao();
                        _fInBaoCao.MdiParent = fMain.ActiveForm;
                        _fInBaoCao.Show();
                        

                    }
                }
                else
                {
                    MessageBox.Show("Mã Số Thuế Chưa Hợp Lệ (10 số) ???", "Note !", MessageBoxButtons.OK, MessageBoxIcon.Error); 
                }
            }
            else {
                MessageBox.Show("Chưa Điền Thông Tin Đầy Đủ ???", "Note !", MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
        }

        private void groupControl1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void textBoxMaSo_Leave(object sender, EventArgs e)
        {
           if(textBoxMaSo.Text.Trim() !="")
           {
                if (textBoxMaSo.Text.Trim().Length != 10)
                {
                    MessageBox.Show("Mã Số Thuế Chưa Hợp Lệ (Số đã nhập : " + textBoxMaSo.TextLength.ToString() + " số) ( quy đinh là 10 số) ???", "Note !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    textBoxMaSo.Focus();
                }
           }
        }

       

      
    }
}